Computer systems have become the primary means for individuals and organizations to manipulate and store data. Typically, the larger the amount of data to be stored and manipulated, the larger the reliance on a computer system. Often, large amounts of data are stored in one or more databases, where the data is organized into a database structure. Today, it is increasingly common for an entity which is responsible for controlling significant amounts of data to institute computer based systems, using electronic storage of data and databases. For example, banks, insurance companies, investment companies, retailers, government agencies, universities, and others all keep databases of customer lists, accounts, inventories, and so on in electronic storage.
When information in a database is considered critical, it is often considered prudent to take steps to preserve such data. A common approach to preserving electronic data is to use a computer system which not only stores the new data in databases, but also makes copies of those databases. In one approach, database copies are made at regular fixed intervals of time, e.g., a daily copy of a stores sales data for the day. Periodic copies, also referred to as back-ups, are used when the risk of loss of information is not so great as to justify the additional expense associated with real-time copies. Using another approach, copies may be made in "real-time", where the copied data is kept current by copying the main database as it changes. One example where such real-time copies are customary is in the banking industry, where large banks may have thousands of accounts changing each minute and the loss of the data for the myriad transactions throughout the day could prove catastrophic. The process of writing data or databases in real-time to multiple storage locations is referred to as "shadowing" or "mirroring", which yields multiple copies of the data or database.
With the need to keep multiple copies of such large amounts of data comes the need for large data storage capacities. The storage of large amounts of data is typically referred to as "mass storage", wherein the data is stored in mass storage devices. With large computer systems and networks serving an increasingly wide variety of entities and storing a wide variety and amount of data, mass storage devices are becoming the norm. One increasingly popular form of mass storage device is a disk array. A disk array is commonly defined as a collection of disks combined, coordinated and managed by some form of array management software. An increasingly popular form of disk array is the "redundant array of independent disks" (RAID). A RAID is a special type of disk array which is intended for uses involving the storage of redundant, i.e., copied, data.
Depending on how a RAID is configured and used, it can be classified as being of a certain RAID Level, i.e., Level 0-6, defined by the RAID Advisory Board, Inc. (RAB). The RAB is an organization which seeks to standardize and promote the use of RAID devices and related products. The RAB defines RAID levels in their publication The RAIDBook, Nov. 18, 1993.
There are various methods of storing information in a RAID, e.g., shadowing or striping data. When data is written to a storage device by striping, it is broken into blocks of data, wherein the blocks of data are written, or distributed, among the disks within the array. Disk striping is used to expand the overall storage capacity of a computer system for the storage of original, i.e. non-redundant, data. With disk striping, copies of original data are not made. Therefore, strictly speaking, a disk array configured for disk striping is not a true RAID. However, within the art, disk striping may be referred to, and is defined by the RAB, as a "RAID Level 0" system. As an example, a disk array which comprises six one-gigabyte disks is capable of storing about six gigabytes of new data. However, none of the newly stored data is also written to another location within the disk array, to yield a copy. The disk striping system of this example may be said to have an "effective storage capacity" of six gigabytes. Effective storage capacity refers to how much non-redundant data can be stored by a system or disk array.
Within RAID Levels 1-6, there are a variety of configurations which all store redundant data in slightly different ways. For illustrative purposes, the writing of redundant data by disk shadowing will be emphasized. Basically, disk shadowing is the creating of copies of data by writing the data to multiple disks within an array in real-time. Therefore, shadowing yields less effective storage capacity than does disk striping. For example, if there was a RAID of six one-gigabyte disks configured for disk shadowing, the effective storage capacity of the RAID may be calculated to be one gigabyte, assuming five of the one-gigabyte disk drives are used for storing redundant data.
Another characteristic of the current information age is the increasingly distributed nature of computer systems. In such distributed systems, it is often the case that access to a main database may be gained from a wide variety of remote locations. For example, an insurance company may have satellite offices throughout the country, each with a local area network (LAN) which connects to a remote central computer network over a long haul link, wherein the central network includes devices which store the company's databases of client policy information. Computers in the satellite offices rely on connectivity to the remote central computer network for access to client policy information. However, if the remote central computer network losses connectivity with the satellite offices by, for example, a power outage or equipment failure, the overall system becomes inoperable. In another example of a distributed computer system, a bank may use centralized databases, with certain degrees of access to client accounts available at automated teller machines (ATMs) worldwide. As with the insurance company example, loss of connectivity to the bank's central databases, or their corruption or malfunction, causes the entire system to become inoperable. With such distributed computer systems and reliance on critical data contained therein, it is desirable to achieve the benefits of database copies within the distributed system.
As shown in FIG. 1, a computer system using typical prior art devices is capable of storing and copying data. The host computer 110, may be a workstation, such as an Alpha workstation by Digital Equipment Corporation ("Digital") of Maynard, Mass., or a server on a LAN. The host computer 110 runs applications which seek to manipulate or store data using the disk controllers 120 and 140. The host computer 110 communicates with controller 120 via a local data bus 115. The local controller 120 interfaces with the local data bus 115 at what is referred to as its "front-end". The front-end of the controller 120 receives data to be written to storage devices in connection with the controller's 120 "back-end". The local controller 120 channels the data provided by host computer 110 to a number of devices at its back-end over buses 130. The number of data buses originating from the back-end of a controller typically corresponds to the number of ports available at its back-end. As can be seen from the figure, two of the buses on the back end of the local controller 120 connect directly to local storage devices 125. A collection of storage devices 125 at the back-end of the controller 120 may be considered a RAID. These disks 125 provide a medium for local storage of data to be used in conjunction with the operations of host computer 110 or other devices on the LAN.
For a variety of reasons, it may be desirable to store copies of main databases remotely as well as locally. Referring to the previous example, if a bank using a distributed computer system relies on its remote central databases for information and loses connectivity with the central databases by, for example, power outage or equipment failure, the overall system becomes inoperable. Similarly, if the central databases become corrupted through computer hacking or a computer virus, it may be undesirable to use the compromised databases. Therefore, a bank may wish to have several remote databases which are all kept current by, for example, the process of database shadowing. In such a system, should the bank lose the primary database site due to some loss of communications, database malfunction, or other such catastrophe, the bank has available another database site within its network containing the same information. The redundant site allows the bank to continue to transact business without an impact from the loss of their primary database site. Such a system is referred to as a "disaster tolerant" system.
Again referring to FIG. 1, one possible configuration of proprietary storage controllers used for storing data remotely and achieving a disaster tolerant system is shown. The storage controller is considered proprietary because the vendor of the controller does not make technical information about the interface 165 available to those who acquire or use the controller. In this example, a communication path 180 connects the proprietary interfaces of the controllers 120 and 140 to accomplish remote "out-of-band" communications between two compatible disk controllers. "Out-of-band" communications refers to data from host 110 that gets channeled off of the standard data bus within the local controller 120, which passes data from the front-end port to the back-end ports, and redirected to the proprietary interface 165. In such a proprietary disaster tolerant system, the communication path 180 comprises the following elements: local proprietary interface 165 within local controller 120, remote proprietary interface 175 within remote controller 140, local and remote data lines 160, 170, local and remote modems 135, 137 and long haul data link 136. The proprietary interfaces 165, 175 provide a physical and logical means by which to have data sent by the local superordinate controller 120 in a format which is interpretable by the remote subordinate controller 140. Once the data is received and interpreted by remote controller 140, it transmits the data to storage devices 145 at the back-end 150 of controller 140.
Because proprietary data is generally not made available to users, the disk controller vendor is often required to configure the proprietary interface within the disk controller for disaster tolerance. This typically results in a customized controller which is not fully maintainable by the owner of the system. Therefore, systems which use proprietary controllers to achieve remote database copies are relatively expensive in terms life cycle cost. "Life cycle cost" is the term used to encompass the expense of acquiring, configuring, operating, maintaining, and disposing of a device.